home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / odoors33.zip / OPENDOOR.H < prev    next >
C/C++ Source or Header  |  1992-03-10  |  21KB  |  811 lines

  1. /*          ╔════════════════════════════════════════════════════╗
  2.  *          ║   ┌─────┐                                          ║
  3.  *          ║   │     │┌────┐┌───┐┌──┐                           ║
  4.  *          ║   │     ││    │├───┘│  │                           ║
  5.  *          ║   └─────┘├────┘└─── │  ├────┐                      ║
  6.  *          ║          │             │    │┌───┐┌───┐┌─── ┌──    ║
  7.  *          ║                        │    ││   ││   ││    └──┐   ║
  8.  *          ║                        └────┘└───┘└───┘│     ──┘   ║
  9.  *          ║                    ────────────                    ║
  10.  *          ║                    Version 3.30                    ║
  11.  *          ╚════════════════════════════════════════════════════╝
  12.  *           (C) Copyright 1992, Brian Pirie. All Rights Reserved.
  13.  *
  14.  *
  15.  *                     UNREGISTERED EVALUATION VERSION
  16.  *                                 ─────────
  17.  *  This version of OpenDoors may be used for a reasonable evaluation
  18.  *  period, and doors written with it may NOT be distributed. Your low $25
  19.  *  registration fee will entitle you to continue using OpenDoors,
  20.  *  distribute or even sell programs written with it, and you will be entitled
  21.  *  to free upgrades to newer versions of OpenDoors. Unlike other libraries
  22.  *  of this sort, OpenDoors requires no additional licencing fees - once you
  23.  *  have paid your $25, you will be entitled to unlimited use of the
  24.  *  product.
  25.  */
  26.  
  27.  
  28. #ifndef OPENDOOR_H
  29. #define OPENDOOR_H
  30.  
  31.  
  32. #define FALSE 0
  33. #define TRUE !FALSE
  34. #define MAYBE 2
  35.  
  36.  
  37. #define D_BLACK    0
  38. #define D_BLUE     1
  39. #define D_GREEN    2
  40. #define D_CYAN     3
  41. #define D_RED      4
  42. #define D_MAGENTA  5
  43. #define D_BROWN    6
  44. #define D_GREY     7
  45. #define L_BLACK    8
  46. #define L_BLUE     9
  47. #define L_GREEN    10
  48. #define L_CYAN     11
  49. #define L_RED      12
  50. #define L_MAGENTA  13
  51. #define L_YELLOW   14
  52. #define L_WHITE    15
  53. #define B_BLACK    L_BLACK
  54. #define B_BLUE     L_BLUE
  55. #define B_GREEN    L_GREEN
  56. #define B_CYAN     L_CYAN
  57. #define B_RED      L_RED
  58. #define B_MAGENTA  L_MAGENTA
  59. #define B_YELLOW   L_YELLOW
  60. #define B_WHITE    L_WHITE
  61.  
  62.  
  63.  
  64. #define od_set_color(x,y) od_set_attrib(x|(y<<4))
  65.  
  66.  
  67. extern int od_errno;
  68.  
  69. #define EFAULT  -1
  70. #define EZERO    0
  71. #define EINVFNC  1
  72. #define ENOFILE  2
  73. #define ENOENT   2
  74. #define ENOPATH  3
  75. #define EMFILE   4
  76. #define EACCES   5
  77. #define EBADF    6
  78. #define ECONTR   7
  79. #define ENOMEM   8
  80. #define EINVMEM  9
  81. #define EINVENV 10
  82. #define EINVFMT 11
  83. #define EINVACC 12
  84. #define EINVDAT 13
  85. #define EINVDRV 15
  86. #define ENODEV  15
  87. #define ECURDIR 16
  88. #define ENOTSAM 17
  89. #define ENMFILE 18
  90. #define EINVAL  19
  91. #define E2BIG   20
  92. #define ENOEXEC 21
  93. #define EXDEV   22
  94. #define EDOM    33
  95. #define ERANGE  34
  96. #define EEXIST  35
  97.  
  98.  
  99.  
  100.  
  101. struct _od_control
  102.    {
  103.    char          info_path[60];
  104.  
  105.  
  106.    char          port;
  107.    unsigned int  baud;
  108.  
  109.  
  110.    char          system_name[40],
  111.                  sysop_name[40];
  112.    long          system_calls;
  113.    char          system_last_caller[36],
  114.                  timelog_start_date[9];
  115.    int           timelog_busyperhour[24],
  116.                  timelog_busyperday[7];
  117.  
  118.    char          user_name[36],
  119.                  user_location[26],
  120.                  user_password[16],
  121.                  user_dataphone[13],
  122.                  user_homephone[13],
  123.                  user_lasttime[6],
  124.                  user_lastdate[9],
  125.                  user_attribute,
  126.                  user_flags[4];
  127.    unsigned int  user_credit,
  128.                  user_pending,
  129.                  user_messages,
  130.                  user_lastread,
  131.                  user_security,
  132.                  user_numcalls,
  133.                  user_uploads,
  134.                  user_downloads,
  135.                  user_upk,
  136.                  user_downk,
  137.                  user_todayk,
  138.                  user_time_used,
  139.                  user_screen_length;
  140.    char          user_last_pwdchange,
  141.                  user_attrib2,
  142.  
  143.                  event_status,
  144.                  event_starttime[6],
  145.                  event_errorlevel,
  146.                  event_days,
  147.                  event_force,
  148.                  event_last_run[9],
  149.  
  150.                  caller_netmailentered,
  151.                  caller_echomailentered,
  152.                  caller_logintime[6],
  153.                  caller_logindate[9];
  154.    int           caller_timelimit;
  155.    long          caller_loginsec;
  156.    long          caller_credit;
  157.    int           caller_userrecord,
  158.                  caller_readthru,
  159.                  caller_numpages,
  160.                  caller_downlimit;
  161.    char          caller_timeofcreation[6],
  162.                  caller_logonpassword[16],
  163.                  caller_wantchat,
  164.                  caller_ansi;
  165.  
  166.    int           ra_deducted_time;
  167.    char          ra_menustack[50][9],
  168.                  ra_menustackpointer,
  169.                  ra_userhandle[36],
  170.                  ra_comment[81],
  171.                  ra_firstcall[9],
  172.                  ra_combinedrecord[25],
  173.                  ra_birthday[9],
  174.                  ra_subdate[9],
  175.                  ra_screenwidth,
  176.                  ra_error_free,
  177.                  ra_sysop_next,
  178.                  ra_emsi_session,
  179.                  ra_emsi_crtdef[41],
  180.                  ra_emsi_protocols[41],
  181.                  ra_emsi_capabilities[41],
  182.                  ra_emsi_requests[41],
  183.                  ra_emsi_software[41],
  184.                  ra_hold_attr1,
  185.                  ra_hold_attr2,
  186.                  ra_hold_len,
  187.  
  188.                  od_status_on,
  189.                  od_okaytopage;
  190.    int           od_pagestartmin,
  191.                  od_pageendmin;
  192.    void          (*od_before_exit)(void);
  193.    void          (*od_cbefore_chat)(void);
  194.    void          (*od_cafter_chat)(void);
  195.    void          (*od_cbefore_shell)(void);
  196.    void          (*od_cafter_shell)(void);
  197.    char          od_extended_info,
  198.                  od_ra_info;
  199.    int           od_inactivity;
  200.    char          od_clear_on_exit,
  201.                  od_user_keyboard_on,
  202.                  od_chat_color1,
  203.                  od_chat_color2,
  204.                  od_list_title_col,
  205.                  od_list_name_col,
  206.                  od_list_size_col,
  207.                  od_list_comment_col,
  208.                  od_list_offline_col,
  209.                  od_num_keys;
  210.    int           od_hot_key[16],
  211.                  od_last_hot;
  212.    char          *od_before_shell,
  213.                  *od_after_shell,
  214.                  *od_help_text,
  215.                  *od_before_chat,
  216.                  *od_after_chat,
  217.                  od_avatar,
  218.                  od_info_type,
  219.                  od_page_len;
  220.    unsigned char od_disable;
  221.    char          od_rbbs_node,
  222.                  od_nocopyright;
  223.  
  224.    int           caller_usernum;
  225.    char          caller_callsign[12],
  226.                  caller_sex;
  227.  
  228.    unsigned int  key_hangup,
  229.                  key_drop2bbs,
  230.                  key_dosshell,
  231.                  key_chat,
  232.                  key_sysopnext,
  233.                  key_lockout,
  234.                  key_help,
  235.                  key_nohelp,
  236.                  key_keyboardoff,
  237.                  key_moretime,
  238.                  key_lesstime;
  239.    };
  240.  
  241.  
  242. extern char default_path[60];
  243.  
  244. extern char od_registered_to[36];
  245. extern unsigned int od_registration_key;
  246. extern char od_program_name[40];
  247.  
  248. #define DORINFO1       0
  249. #define EXITINFO       1
  250. #define RA1EXITINFO    2
  251. #define CHAINTXT       3
  252. #define SFDOORSDAT     4
  253. #define CALLINFO       5
  254. #define DOORSYS_GAP    6
  255. #define DOORSYS_DRWY   7
  256.  
  257. #define DIS_INFOFILE        0x01
  258. #define DIS_CARRIERDETECT   0x02
  259. #define DIS_TIMEOUT         0x04
  260.  
  261. extern struct _od_control od_control;
  262.  
  263.  
  264.  
  265. struct _net_address
  266.    {
  267.    int zone,
  268.        net,
  269.        node,
  270.        point;
  271.    };
  272.  
  273.  
  274. struct config
  275.    {
  276.    unsigned version_id;
  277.    char     commport;
  278.    long     baud;
  279.    char     init_tries,
  280.             init_str[71],
  281.             busy_str[71],
  282.             init_resp[41],
  283.             busy_resp[41],
  284.             connect_300[41],
  285.             connect_1200[41],
  286.             connect_2400[41],
  287.             connect_4800[41],
  288.             connect_9600[41],
  289.             connect_19k[41],
  290.             connect_38k[41],
  291.             answer_phone,
  292.             ring_str[21],
  293.             answer_str[21],
  294.             flush_buffer;
  295.    int      modem_delay,
  296.             minimum_baud,
  297.             graphics_baud,
  298.             transfer_baud;
  299.    char     slow_baud_time_start[6],
  300.             slow_baud_time_end[6],
  301.             download_time_start[6],
  302.             download_time_end[6],
  303.             paging_time_start[6],
  304.             paging_time_end[6],
  305.             loading_msg[71],
  306.             list_prompt[71];
  307.    int      pwd_expiry;
  308.    char     menu_path[61],
  309.             text_path[61],
  310.             net_path[61],
  311.             nodelist_path[61],
  312.             msg_base_path[61],
  313.             sys_path[61],
  314.             external_ed_cmd[61];
  315.    struct   _net_address address[10];
  316.    char     system_name[31];
  317.    unsigned new_security;
  318.    int      new_credit;
  319.    char     new_flags[4],
  320.             origin_line[61],
  321.             quote_string[16],
  322.             sysop[36],
  323.             log_file_name[61],
  324.             fast_logon,
  325.             allow_sys_rem,
  326.             mono_mode,
  327.             strict_pwd_checking,
  328.             direct_write,
  329.             show_check;
  330.    int      credit_factor,
  331.             user_time_out,
  332.             logon_time,
  333.             password_tried,
  334.             max_page,
  335.             page_length;
  336.    char     check_for_multi_logon,
  337.             exclude_sysop_from_list,
  338.             one_word_names,
  339.             check_mail,
  340.             ask_voice_phone,
  341.             ask_data_phone,
  342.             do_full_mail_check,
  343.             allow_file_shells,
  344.             fix_upload_dates,
  345.             show_file_dates,
  346.             ansi,
  347.             clear_screen,
  348.             more_prompt,
  349.             upload_msgs,
  350.             kill_sent;
  351.    unsigned crash_ask_sec;
  352.    char     crash_ask_flags[4];
  353.    unsigned crash_sec;
  354.    char     crash_flags[4];
  355.    unsigned f_attach_sec;
  356.    char     f_attach_flags[4];
  357.    char     norm_fore,
  358.             norm_back,
  359.             stat_fore,
  360.             stat_back,
  361.             hi_back,
  362.             hi_fore,
  363.             wind_fore,
  364.             wind_back,
  365.             exit_local,
  366.             exit_300,
  367.             exit_1200,
  368.             exit_2400,
  369.             exit_4800,
  370.             exit_9600,
  371.             exit_19k,
  372.             exit_38k,
  373.             multi_line,
  374.             min_pwd_len;
  375.    unsigned min_up_space;
  376.    char     hot_keys,
  377.             border_fore,
  378.             border_back,
  379.             bar_fore,
  380.             bar_back,
  381.             log_style,
  382.             multi_tasker,
  383.             pwd_board;
  384.    unsigned buffer_size;
  385.    char     f_keys[10][61],
  386.             why_page,
  387.             leave_msg,
  388.             show_missing_files,
  389.             missing_string[11],
  390.             allow_netmail_replies,
  391.             logon_prompt[41],
  392.             check_new_files,
  393.             reply_header[61],
  394.             blank_secs,
  395.             protocol_attrib[6],
  396.             error_free_string[16],
  397.             default_combined[25];
  398.    unsigned renum_threshold;
  399.    char     left_bracket,
  400.             right_bracket,
  401.             ask_for_handle,
  402.             ask_for_birthdate;
  403.    unsigned unused;
  404.    char     confirm_msg_deletes,
  405.             location_prompt[61],
  406.             page_prompt[61],
  407.             user_file_prompt[41],
  408.             new_user_group,
  409.             avatar,
  410.             bad_pwd_area,
  411.             location[41],
  412.             do_after_action,
  413.             cr_prompt[41],
  414.             cr_fore,
  415.             cr_back,
  416.             continue_prompt[41],
  417.             send_break,
  418.             list_path[61],
  419.             full_msg_view,
  420.             emsi_enable,
  421.             emsi_new_user,
  422.             future_expansion[492],
  423.             config_path[80],
  424.             config_type;
  425.    };
  426.  
  427. extern struct config *cfg;
  428.  
  429. #define BBS_RA 0
  430.  
  431. #define YES 0
  432. #define NO 1
  433. #define ASK 2
  434.  
  435.  
  436.  
  437. struct file_area
  438.    {
  439.    char      name[31];
  440.    unsigned char attrib;
  441.    char      path[41],
  442.          space[41];
  443.    unsigned int  security;
  444.    unsigned char flags_a,
  445.                  flags_b,
  446.                  flags_c,
  447.                  flags_d;
  448.    unsigned int  private_security;
  449.    unsigned char priv_flags_a,
  450.                  priv_flags_b,
  451.                  priv_flags_c,
  452.                  priv_flags_d;
  453.    };
  454.  
  455. struct files_info
  456.    {
  457.    struct file_area area[200];
  458.    char         files_path[80];
  459.    char         files_type;
  460.    };
  461.  
  462. extern struct files_info *file_info;
  463.  
  464.  
  465.  
  466.  
  467. struct message_area
  468.    {
  469.    char      name[41],
  470.          area_type,
  471.          message_kinds;
  472.    unsigned char attrib,
  473.          days_kill,
  474.          recv_kill;
  475.    unsigned int  max_msgs,
  476.          read_sec;
  477.    unsigned char read_flags_a,
  478.                  read_flags_b,
  479.                  read_flags_c,
  480.                  read_flags_d;
  481.    unsigned int  write_sec;
  482.    unsigned char write_flags_a,
  483.          write_flags_b,
  484.          write_flags_c,
  485.          write_flags_d;
  486.    unsigned int  sysop_sec;
  487.    unsigned char sysop_flags_a,
  488.          sysop_flags_b,
  489.          sysop_flags_c,
  490.          sysop_flags_d;
  491.    char      origin_line[61];
  492.    unsigned char which_aka;
  493.    };
  494.  
  495. struct msg_info
  496.    {
  497.    struct message_area area[200];
  498.    char            msg_path[80];
  499.    char            msg_type;
  500.    };
  501.  
  502. extern struct msg_info *message_info;
  503.  
  504. #define AREA_ECHOINFO    0x01
  505. #define AREA_COMBINED    0x02
  506. #define AREA_FILEATTACH 0x04
  507. #define AREA_ALIASES    0x08
  508. #define AREA_HANDLE    0x10
  509.  
  510. #define KIND_BOTH      0
  511. #define KIND_PRIVATE   1
  512. #define KIND_PUBLIC    2
  513. #define KIND_READONLY  3
  514.  
  515. #define TYPE_LOCAL     0
  516. #define TYPE_NETMAIL   1
  517. #define TYPE_ECHOMAIL  2
  518.  
  519.  
  520.  
  521.  
  522. struct user_rec
  523.    {
  524.    char          name[36],
  525.                  location[26],
  526.                  password[16],
  527.                  data_phone[13],
  528.                  voice_phone[13],
  529.                  last_time[6],
  530.                  last_date[9];
  531.    unsigned char attrib1,
  532.                  flag[4];
  533.    unsigned int  netmail_credit,
  534.                  credit_pending,
  535.                  msgs_posted,
  536.                  last_read,
  537.                  security,
  538.                  num_calls,
  539.                  uploads,
  540.                  downloads,
  541.                  upload_k,
  542.                  download_k,
  543.                  today_k;
  544.    int           elapsed_time;
  545.    unsigned int  screen_length;
  546.    unsigned char last_pwd_change,
  547.                  attrib2,
  548.                  group;
  549.    unsigned int  xi_record;
  550.    char          space[3],
  551.                  handle[36],
  552.                  comment[81],
  553.                  first_date[9];
  554.    unsigned char combined_areas[25];
  555.    char          birth_date[9],
  556.                  expiry_date[9];
  557.    unsigned char screen_width,
  558.                  extra_space[83];
  559.    };
  560.  
  561. extern struct user_rec *user_record;
  562. extern char user_type;
  563. extern int num_users;
  564. extern int user_number;
  565.  
  566. #define USER_RA100       0
  567. #define USER_RA_QBBS     1
  568.  
  569.  
  570. struct _timelog
  571.    {
  572.    char          start_date[9];
  573.    unsigned int  busy_per_hour[24];
  574.    unsigned int  busy_per_day[7];
  575.    };
  576.  
  577. extern struct _timelog *timelog;
  578.  
  579.  
  580.  
  581. struct eventrecord
  582.    {
  583.    unsigned char status;
  584.    char          time[6];
  585.    unsigned char errorlevel,
  586.                  days;
  587.    char          forced,
  588.                  last_date_run[9];
  589.    };
  590.  
  591. struct _event_file
  592.    {
  593.    struct eventrecord event[20];
  594.    char filename[80];
  595.    };
  596.  
  597. extern struct _event_file *event_file;
  598.  
  599. #define ES_DELETED 0
  600. #define ES_ENABLED 1
  601. #define ES_DISABLED 2
  602.  
  603.  
  604.  
  605.  
  606. struct protocolrecord
  607.    {
  608.    char          name[16],
  609.                  active_key,
  610.                  opus_ctl_file,
  611.                  batch_avail,
  612.                  enabled,
  613.                  log_file[81],
  614.                  ctl_file[81],
  615.                  down_cmd[81],
  616.                  down_ctl[81],
  617.                  up_cmd[81],
  618.                  up_ctl[81],
  619.                  up_log_keyword[21],
  620.                  down_log_keyword[21],
  621.                  desc_word_num,
  622.                  name_word_num;
  623.    };
  624.  
  625. struct _protocol_file
  626.    {
  627.    struct protocolrecord record[15];
  628.    char filename[80];
  629.    };
  630.  
  631. extern struct _protocol_file *protocol_file;
  632.  
  633.  
  634.  
  635. struct _user_on
  636.    {
  637.    char          name[36];
  638.    unsigned char node;
  639.    unsigned int  baud;
  640.    char          location[26],
  641.                  do_not_disturb;
  642.    unsigned char status;
  643.    };
  644.  
  645. extern struct _user_on user_on;
  646.  
  647. #define STATUS_BROWSE    0
  648. #define STATUS_XFER      1
  649. #define STATUS_MESSAGE   2
  650. #define STATUS_DOOR      3
  651. #define STATUS_CHAT      4
  652. #define STATUS_QUEST     5
  653.  
  654.  
  655.  
  656.  
  657. struct _call_history
  658.    {
  659.    unsigned char node;
  660.    char          name[36],
  661.                  location[26];
  662.    unsigned int  baud_rate;
  663.    unsigned long times;
  664.    char          logon_time[6],
  665.                  logoff_time[6];
  666.  
  667.    unsigned long total_system_calls;
  668.    unsigned char last_system_caller[36];
  669.    };
  670.  
  671. extern struct _call_history call_history;
  672.  
  673.  
  674.  
  675.  
  676. struct _menuentry
  677.    {
  678.    unsigned char type;
  679.    unsigned int  security;
  680.    unsigned char flag[4];
  681.    char          display[76],
  682.                  hotkey,
  683.                  options[81];
  684.    unsigned char foreground,
  685.                  background;
  686.    };
  687.  
  688. struct _menufile
  689.    {
  690.    struct _menuentry entry[32];
  691.    char num_entries;
  692.    char filename[80];
  693.    };
  694.  
  695. extern struct _menufile *menufile;
  696.  
  697.  
  698.  
  699.  
  700. struct _msg_hdr
  701.    {
  702.    unsigned int  message_number,
  703.                  previous_reply,
  704.                  next_reply,
  705.                  times_read,
  706.                  start_block,
  707.                  num_blocks,
  708.                  dest_net,
  709.                  dest_node,
  710.                  origin_net,
  711.                  origin_node;
  712.    unsigned char dest_zone,
  713.                  origin_zone;
  714.    unsigned int  cost;
  715.    unsigned char msg_attr,
  716.                  net_attr,
  717.                  board;
  718.    char          time[6],
  719.                  date[9],
  720.                  who_to[36],
  721.                  who_from[36],
  722.                  subject[73];
  723.    };
  724.  
  725. extern struct _msg_hdr *msg_hdr;
  726.  
  727. #define NEXT_MESSAGE 65535
  728.  
  729. struct _msg_info
  730.    {
  731.    unsigned int  first_msg,
  732.                  last_msg,
  733.                  total_msgs,
  734.                  total_on_board[200];
  735.    };
  736.  
  737. extern struct _msg_info *msg_info;
  738.  
  739.  
  740. #define MSG_DELETED         0x01
  741. #define MSG_OUTGOING_NET    0x02
  742. #define MSG_NETMAIL         0x04
  743. #define MSG_PRIVATE         0x08
  744. #define MSG_RECEIVED        0x10
  745. #define MSG_OUTGOING_ECHO   0x20
  746. #define MSG_LOCAL           0x40
  747.  
  748. #define NET_KILL_SENT       0x01
  749. #define NET_SENT            0x02
  750. #define NET_FILE_ATTACH     0x04
  751. #define NET_CRASH           0x08
  752. #define NET_REQ_RECEIPT     0x10
  753. #define NET_REQ_AUDIT       0x20
  754. #define NET_RETURN_RECEIPT  0x40
  755.  
  756.  
  757.  
  758.  
  759. void od_init(void);
  760. void od_kernal(void);
  761. void od_exit(int errorlevel,char term_call);
  762. void od_page(void);
  763. void od_disp_str(char *string);
  764. void od_printf(char *format,...);
  765. void od_clr_scr(void);
  766. void od_set_cursor(int row,int col);
  767. void od_set_attrib(int color);
  768. void od_clear_keybuffer(void);
  769. int od_get_key(int wait);
  770. void od_input_str(char *string,int max_len,unsigned char minchar,unsigned char maxchar);
  771. void od_repeat(char value,unsigned char times);
  772. void od_clr_line(void);
  773. void od_disp(char *buffer,int size,char local_echo);
  774. void od_emulate(register char in_char);
  775. int od_send_file(char *filename);
  776. int od_list_files(char *directory);
  777. int od_read_config(void);
  778. int od_write_config(void);
  779. int od_read_files(void);
  780. int od_write_files(void);
  781. int od_read_msgs(void);
  782. int od_write_msgs(void);
  783. int od_read_events(void);
  784. int od_write_events(void);
  785. int od_read_protocols(void);
  786. int od_write_protocols(void);
  787. int od_calls_open(void);
  788. int od_calls_read_next(void);
  789. int od_calls_add(void);
  790. int od_calls_close(void);
  791. int od_useron_open(void);
  792. int od_useron_read(unsigned char node);
  793. int od_useron_write(void);
  794. int od_useron_close(void);
  795. int od_open_users(char *path);
  796. int od_read_user(int num);
  797. int od_write_user(void);
  798. int od_add_user(void);
  799. int od_close_users(void);
  800. int od_read_timelog(void);
  801. int od_read_menu(char *filename);
  802. int od_write_menu(void);
  803. int od_msg_open(void);
  804. int od_msg_read_text(char *text,unsigned int max_len);
  805. int od_msg_read_hdr(unsigned int num);
  806. int od_msg_post(char *text);
  807. int od_msg_change_hdr(void);
  808. int od_msg_close(void);
  809.  
  810. #endif
  811.